<?php

set_time_limit(900);

class Admin_CrontabController extends Zend_Controller_Action
{
    
     
    // wget http://garrapassofundo.hospedagemdesites.ws/admin/crontab/otimizarbanco
    public function otimizarbancoAction() {
        
        $this->_helper->layout->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender();
        
        $db = Zend_Db_Table_Abstract::getDefaultAdapter(); 
        
        //Rode o seguinte comando SQL para verificar quais as tabelas mais fragmentadas:
        //SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, DATA_FREE, (DATA_FREE*100/DATA_LENGTH) as PRC FROM INFORMATION_SCHEMA.TABLES WHERE (DATA_FREE*100/DATA_LENGTH);
     
        
        // deixar de fora por causa do tamanho
        // `ACESSO_PAGINAS`, `PUBLICACAO_LISTA_RESPOSTA`, `PUBLICACAO`, `PUBLICACAO_LISTA`, `PUBLICACAO_LISTA_ALUNO`, `PUBLICACAO_LISTA_GABARITO`,  `PUBLICACAO_SIMULADO`, `PUBLICACAO_SIMULADO_ALUNO`, `PUBLICACAO_SIMULADO_GABARITO`, `PUBLICACAO_SIMULADO_RESPOSTA`, `PUBLST_QSTDIS`, `PUBLST_QSTDISALU`, `PUBLST_QSTDISCBS`, `PUBLST_QSTDISCUR`, `PUBLST_RANALU`, `PUBSIM_QSTDIS`, `PUBSIM_QSTDISALU`, `PUBSIM_QSTDISCBS`, `PUBSIM_QSTDISCUR`, `PUBSIM_RANALU`,
        $arr = explode(',','`AGENDA_ATENDIMENTONAP`, `ALUNO`, `ALUNO_CONTEUDO`, `ALUNO_HAS_OPCAOVESTIBULAR`, `APROVACAO`, `ATENDIMENTO_NAP`, `ATUALIZACAO_CARREGADO`, `ATUALIZACAO_EXECUTADO`, `ATUALIZACAO_SISTEMA`, `BOLETIM`, `BOLETIM_DESEMPENHO`, `BOLETIM_DESEMPENHO_DISC`, `CALENDARIO`, `CONTEUDO`, `CURSO`, `CURSOBASE`, `CURSOFACULDADE`, `CURSO_FORMA`, `CURSO_TURNO`, `DISCIPLINA`, `EAD_BANNER`, `EAD_CONTATO`, `FACULDADE`, `FACULDADE_PROVA`, `FACULDADE_PROVA_DISC`, `FILA_MATRICULA`, `FORMAS_PAGAMENTO`, `FREQUENCIA`, `GALERIA`, `HORARIOS_AGENDAMENTONAP`, `HORARIOS_AGENDAMENTONAP_HORA`, `INSTITUICAO_ENSINO_ANTERIOR`, `LINKUTEIS`, `LISTA_APROVACAO`, `LISTA_EXERCICIO`, `LISTA_EXERCICIO_GABARITO`, `LISTA_SIMULADO`, `LISTA_SIMULADO_GABARITO`, `LOG_ERROS`, `MATERIAL`, `MATRICULA`, `MATRICULA_HAS_MATERIAL`, `MENU`, `MENU_ALUNO`, `MODULOS`, `MURAL_RECADOS`, `MURAL_RECADOS_MSG`, `NUMEROTURMA`, `PARAMETROS`, `PARCELAMENTO`, `PERMISSAO`, `PERMISSAO_HAS_IP`, `PERMISSAO_HAS_MODULO`, `PROFESSOR`, `PROFISSAO`, `PUBLICACAO`, `PUBLICACAO_LISTA`, `PUBLICACAO_LISTA_ALUNO`, `PUBLICACAO_LISTA_GABARITO`, `PUBLICACAO_LISTA_RESPOSTA`, `PUBLICACAO_SIMULADO`, `PUBLICACAO_SIMULADO_ALUNO`, `PUBLICACAO_SIMULADO_GABARITO`, `PUBLICACAO_SIMULADO_RESPOSTA`, `PUBLST_QSTDIS`, `PUBLST_QSTDISALU`, `PUBLST_QSTDISCBS`, `PUBLST_QSTDISCUR`, `PUBLST_RANALU`, `PUBSIM_QSTDIS`, `PUBSIM_QSTDISALU`, `PUBSIM_QSTDISCBS`, `PUBSIM_QSTDISCUR`, `PUBSIM_RANALU`, `SISTEMA`, `TIPOMATERIAL`, `TIPO_ATENDIMENTONAP`, `TIPO_USUARIO`, `TOPICO`, `TOPICO_ALUNO`, `TURNO`, `USUARIOS`');
        
        foreach($arr as $tabela){
            
            // Para desfragmentar uma tabela MyIsam basta rodar o seguinte comando:
            $query = "OPTIMIZE TABLE ".$tabela." ";
            $result = $db->query($query)->execute();
            echo $tabela.' OPTIMIZE : '.$result.'<br>';
            
            
            // Para reindexar as tabelas InnoDB:
            $query = "ALTER TABLE  ".$tabela." ENGINE = INNODB"; 
            $result = $db->query($query)->execute();
            echo $tabela.' ENGINE = INNODB : '.$result.'<br>'; 
        }
        
        $query = 'SELECT * FROM SISTEMA WHERE SIS_ID = 1'; 
        $result = $db->fetchRow($query);
        $db->update('SISTEMA',array('SIS_CRNTAB'=> $result['SIS_CRNTAB'] + 1,'SIS_CRNDAT'=>date('Y-m-d')),'SIS_ID = 1'); 
        
        if($_SERVER['SERVER_NAME'] == 'garrapassofundo.com.br'){
            $dadosSite = file_get_contents('http://garrachapeco.com.br/admin/crontab/otimizarbanco');
            echo $dadosSite.'<br>';

            $dadosSite = file_get_contents('http://garraerechim.com.br/admin/crontab/otimizarbanco');
            echo $dadosSite.'<br>';

            $dadosSite = file_get_contents('http://garrasoledade.hospedagemdesites.ws/admin/crontab/otimizarbanco');
            echo $dadosSite.'<br>';
        }
        echo 'sucesso';
    }
    
    // wget http://garrapassofundo.hospedagemdesites.ws/admin/crontab/verificadatafimmatricula
    public function verificadatafimmatriculaAction(){
        
        $this->_helper->layout->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender();
        
        $db = Zend_Db_Table_Abstract::getDefaultAdapter();
        
        $query = 'SELECT SQL_CACHE c.CUR_ID '
                . 'FROM CURSO c '
                . 'WHERE c.CUR_DATFIM < "'.date('Y-m-d').'" AND c.CUR_DATFIM <> "0000-00-00" '
                . 'AND c.CUR_STA = 1 ';
        
        $result = $db->fetchAll($query);
        foreach($result as $row){
            
            $db->update('MATRICULA',array('MAT_STA'=>0),'CUR_ID = ' . $row['CUR_ID']); 
            
            $db->update('CURSO',array('CUR_STA'=>0),'CUR_ID = ' . $row['CUR_ID']); 
        }
        
        $query = 'SELECT * FROM SISTEMA WHERE SIS_ID = 1';
        $result = $db->fetchRow($query);
        $db->update('SISTEMA',array('SIS_CRNTAB'=> $result['SIS_CRNTAB'] + 1,'SIS_CRNDAT'=>date('Y-m-d')),'SIS_ID = 1'); 
        
        if($_SERVER['SERVER_NAME'] == 'garrapassofundo.com.br'){
            $dadosSite = file_get_contents('http://garrachapeco.com.br/admin/crontab/verificadatafimmatricula');
            echo $dadosSite.'<br>';

            $dadosSite = file_get_contents('http://garraerechim.com.br/admin/crontab/verificadatafimmatricula');
            echo $dadosSite.'<br>';

            $dadosSite = file_get_contents('http://garrasoledade.hospedagemdesites.ws/admin/crontab/verificadatafimmatricula');
            echo $dadosSite.'<br>';
        }
        echo 'sucesso';
        
        // valida lsita de exercicios encerradas
        $query = 'SELECT SQL_CACHE PUL_ID, PUL_DATENC, PUL_HORENC FROM PUBLICACAO_LISTA '
                .' WHERE PUL_ANO = "'.date('Y').'" AND PUL_DATENC <= "'.date('Y-m-d').'"'
                .' AND PUL_STA = 1';
        $row = $db->fetchRow($query);
        
        if(isset($row['PUL_ID']) && strtotime($row['PUL_DATENC']) <= strtotime(date('Y-m-d'))){
            if(strtotime($row['PUL_HORENC']) < strtotime(date('H:i:s'))){
                $data = array('PUL_STA' => 2);
                $db->update('PUBLICACAO_LISTA',$data,'PUL_ID = '.$row['PUL_ID']);
                $ok = TRUE;
            }   
        }
    }
    
    public function gerarrelatoriolistaAction(){
        
        $this->_helper->layout->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender();
        
        $dadosSite = file_get_contents('http://garrapassofundo.com.br/admin/funreport/gerarrelatoriolista');
        echo $dadosSite.'<br>';

        $dadosSite = file_get_contents('http://garrachapeco.com.br/admin/funreport/gerarrelatoriolista');
        echo $dadosSite.'<br>';

        $dadosSite = file_get_contents('http://garraerechim.com.br/admin/funreport/gerarrelatoriolista');
        echo $dadosSite.'<br>';

        $dadosSite = file_get_contents('http://garrasoledade.hospedagemdesites.ws/admin/funreport/gerarrelatoriolista');
        echo $dadosSite.'<br>';
        
    }
    
}

